#ifndef _GAMEEVENTS_H_
#define _GAMEEVENTS_H_
#include "gDefine.h"
#include "MgrBase.h"
#include "SimpleRefection.h"


class GameEventBase
{
public:
	GameEventBase(EGameEvent eEvent)
		:m_eEvent(eEvent)
	{
	}
	virtual GameEventBase::~GameEventBase(){}
	
	
protected:
	EGameEvent m_eEvent;
private:
		
};

#define DECL_GAMEEVENT(GAMEEVENT,id)public: GAMEEVENT():GameEventBase(id){};static const EGameEvent EventID=id;

class GameEvent_LevelUp: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_LevelUp,EGameEvent_LevelUp);
	DECL_REFLECTION	(GameEvent_LevelUp,"*");
public:	
	int32	m_iLevel;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_GainACard: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_GainACard,EGameEvent_GainACard);
	DECL_REFLECTION	(GameEvent_GainACard,"*");
public:	
	int32	m_iCardDefID;
	int32	m_iCardTypeID;
	int32	m_iCardStar;
	int32	m_iCardRace;
	int32	m_iIsNewType;

	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_GainAHero: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_GainAHero,EGameEvent_GainAHero);
	DECL_REFLECTION	(GameEvent_GainAHero,"*");
public:	
	int32	m_iHeroDefID;
	int32	m_iHeroTypeID;
	int32	m_iHeroStar;
	int32	m_iHeroRace;
	int32	m_iIsNewType;

	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_LevlupHeroFinalSkill: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_LevlupHeroFinalSkill,EGameEvent_LevlupHeroFinalSkill);
	DECL_REFLECTION	(GameEvent_LevlupHeroFinalSkill,"*");
public:	
	int32	m_iSkillLevel;
	rewrite  virtual void OnArchieveReaded(){}
};


class GameEvent_FlushHeroGiftSkill: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_FlushHeroGiftSkill,EGameEvent_FlushHeroGiftSkill);
	DECL_REFLECTION	(GameEvent_FlushHeroGiftSkill,"*");
public:	
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_RankTounamentBattleEnd: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_RankTounamentBattleEnd,EGameEvent_RankTounamentBattleEnd);
	DECL_REFLECTION	(GameEvent_RankTounamentBattleEnd,"*");
public:	
	int32	m_iIsWin;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_EliteTounamentBattleEnd: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_EliteTounamentBattleEnd,EGameEvent_EliteTounamentBattleEnd);
	DECL_REFLECTION	(GameEvent_EliteTounamentBattleEnd,"*");
public:	
	int32	m_iIsWin;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_RobeEnd: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_RobeEnd,EGameEvent_RobeEnd);
	DECL_REFLECTION	(GameEvent_RobeEnd,"*");
public:	
	int32	m_iIsWin;
	int32	m_iGainCoin;
	int32	m_iGainHonor;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_PassStage: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_PassStage,EGameEvent_PassStage);
	DECL_REFLECTION	(GameEvent_PassStage,"*");
public:	
	int32	m_iMapID;
	int32	m_iAreaID;
	int32	m_iStar;
	int32	m_iUniqueID;

	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_FaildPushStage: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_FaildPushStage,EGameEvent_FaildPushStage);
	DECL_REFLECTION	(GameEvent_FaildPushStage,"*");
public:	
	int32	m_iMapID;
	int32	m_iAreaID;
	int32	m_iStar;
	int32	m_iUniqueID;

	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_PassMaze: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_PassMaze,EGameEvent_PassMaze);
	DECL_REFLECTION	(GameEvent_PassMaze,"*");
public:	
	int32	m_iMazeID;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_PassTower: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_PassTower,EGameEvent_PassTower);
	DECL_REFLECTION	(GameEvent_PassTower,"*");
public:	
	int32	m_iTowerLvl;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_MazeFightWithOtherPlayer: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_MazeFightWithOtherPlayer,EGameEvent_MazeFightWithOtherPlayer);
	DECL_REFLECTION	(GameEvent_MazeFightWithOtherPlayer,"*");
public:	
	int32	m_iIsWin;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_FriendUpdate: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_FriendUpdate,EGameEvent_FriendUpdate);
	DECL_REFLECTION	(GameEvent_FriendUpdate,"*");
public:	
	int32	m_iFriendNum;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_SignIn: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_SignIn,EGameEvent_SignIn);
	DECL_REFLECTION	(GameEvent_SignIn,"*");
public:	
	int32	m_iSignInCount;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_GainCoin: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_GainCoin,EGameEvent_GainCoin);
	DECL_REFLECTION	(GameEvent_GainCoin,"*");
public:	
	int32	m_iGainNum;
	int32	m_iBalance;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_GainCash: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_GainCash,EGameEvent_GainCash);
	DECL_REFLECTION	(GameEvent_GainCash,"*");
public:	
	int32	m_iGainNum;
	int32	m_iBalance;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_DrawCard: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_DrawCard,EGameEvent_DrawCard);
	DECL_REFLECTION	(GameEvent_DrawCard,"*");
public:	
	int32		m_iMoneyType; //EShopMoney
	int32		m_iMoneyNum;
	int32		m_iFunctionID;
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_ChangeNickName: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_ChangeNickName,EGameEvent_ChangeNickName);
	DECL_REFLECTION	(GameEvent_ChangeNickName,"*");
public:	
	rewrite  virtual void OnArchieveReaded(){}
};

class GameEvent_InviteAccepted: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_InviteAccepted,EGameEvent_InviteAccepted);
	DECL_REFLECTION	(GameEvent_InviteAccepted,"*");
public:	
	rewrite  virtual void OnArchieveReaded(){}
};
class GameEvent_PassCrusade: public ReflectionBase,public GameEventBase
{
	DECL_GAMEEVENT	(GameEvent_PassCrusade,EGameEvent_PassCrusade);
	DECL_REFLECTION	(GameEvent_PassCrusade,"*");
	int32		m_iNodeID;
public:	
	rewrite  virtual void OnArchieveReaded(){}
};
#endif